function flatTree(data, attr = 'children') {
    //声明一个数组,存储扁平之后的数据
    let flatArr = [];
    //recursion 递归处理函数
    function recursion(arr) {
        //遍历数据
        arr.forEach(item => {
            //判断自己是否有子节点
            if (item[attr] && item[attr].length > 0) {
                recursion(item[attr])
                // console.log(item.children)
            }
            //过滤掉子节点属性名,避免变化之后,还有子节点
            let keys = Object.keys(item)
            keys = keys.filter(key => key !== attr)
            //重新声明一个对象,将item对应的公共属性添加到这个对象里面
            let obj = {};
            // ['name','id','parentId']
            keys.forEach(key => {
                obj[key] = item[key]
            })

            flatArr.push(obj)
        })
    }
    recursion(data)
    return flatArr;
}

let res = flatTree(tree)